emacsclient, which comes with Emacs, is for editing
a file using an already running Emacs rather than starting up a
new Emacs. It does this by sending a request to the already
running Emacs, which must be expecting the request.
Emacs must have executed the server-start
function for ‘emacsclient’ to work. This can be
done either by a command line option:
emacs -f server-start
or by invoking server-start from
.emacs:
(if (some conditions are met) (server-start))
When this is done, Emacs creates a Unix domain socket
named server in
/tmp/emacsuserid. See
server-socket-dir.
To get your news reader, mail reader, etc., to invoke
‘emacsclient’, try setting the
environment variable EDITOR (or sometimes
VISUAL) to the value ‘emacsclient’. You may have to
specify the full pathname of the ‘emacsclient’ program instead.
Examples:
# csh commands:
setenv EDITOR emacsclient
# using full pathname
setenv EDITOR /usr/local/emacs/etc/emacsclient
# sh command:
EDITOR=emacsclient ; export EDITOR
When ‘emacsclient’ is run, it connects
to the socket and passes its command line options to Emacs,
which at the next opportunity will visit the files specified.
(Line numbers can be specified just like with Emacs.) The
user will have to switch to the Emacs window by hand. When
the user is done editing a file, the user can type C-x
# (or M-x server-edit) to indicate this. If
there is another buffer requested by
emacsclient, Emacs will switch to it; otherwise
emacsclient will exit, signaling the calling
program to continue.
There is an alternative version of ‘emacsclient’ called ‘gnuserv’, written by Andy Norman (see Packages that do not come with Emacs). ‘gnuserv’ uses Internet domain sockets, so it can work across most network connections.
The most recent ‘gnuserv’ package is available at